package com.jl.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jl.commons.result.PageDataInfo;
import com.jl.model.Menu;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 菜单资源表 服务类
 * </p>
 *
 * @author JiangJian
 * @since 2019-04-15
 */
public interface IMenuService extends IService<Menu> {


    /**
     * 分页查询菜单
     * @param pageDataInfo 分页配置信息
     * @param qw 筛选条件
     * @return
     */
    void selectMenuDataGrid(PageDataInfo<Map<String,Object>> pageDataInfo, QueryWrapper<Menu> qw);

    /**
     * 批量删除菜单信息
     * 删除菜单信息的同时需要删除role_menu中的数据
     * @param ids
     * @return
     */
    boolean deleteMenuByIds(List<Long> ids);

    /**
     * 通过角色id获得 全部导航的菜单
     * @param roleId
     * @return
     */
    List<Menu> selectNavMenuByRoleId(Long roleId);

    /**
     * 根据角色id 获得所有菜单
     * @param roleId
     * @return
     */
    List<Menu> selectMenuByRoleId(Long roleId);

    /**
     * 查询所有非功能类型的菜单
     * @return
     */
    List<Menu> selectMenuWithoutFunByRoleId(Long roleId);

    /**
     * 根据角色id列表 获得所有菜单
     * @param roleIds
     * @return
     */
    List<Menu> selectMenuByRoleIds(List<Long> roleIds);

    /**
     * 获得父节点为null或者0的菜单
     */
     List<Menu> getRootMenuList(List<Menu> allMenus);

    /**
     *
     * @param menus
     * @param parentId
     * @return
     */
    List<Menu> getchildMenus(List<Menu> menus, Long parentId);

}

